/*
 * PajaroRojo.cpp
 *
 *  Created on: 16/10/2012
 *      Author: Ignacio Galvez
 */
#include <cmath>
#include "PajaroRojo.h"
#include "Daniable.h"
#include <iostream>


PajaroRojo::PajaroRojo(double anguloDeCaida,double normaVelocidadInicial,
 double x, double y, double tiempoInicial):
		Pajaro(anguloDeCaida,normaVelocidadInicial, VIDA_PAJARO_ROJO, x, y, 
			tiempoInicial) {
	std::string path("dibujos/pajaro1.png");
	setImagePath(path);
	}

double PajaroRojo::VIDA_PAJARO_ROJO = 0.5;

double PajaroRojo::FACTOR = sqrt(0.33);


void PajaroRojo::daniar(Daniable* daniable){
	daniable->serDaniadoPorPajaroRojo();
}


void PajaroRojo::rebotar(double ticks) {
	const double G = 10;
	double anguloRebote;
	double tangenteAnguloRebote;
	std::cout << "rebotando pajaroRojo" << std::endl;
	double vx = getNormaVelocidadInicial() * cos(getAnguloDeCaida());
	double vy = getNormaVelocidadInicial() * sin(getAnguloDeCaida()) - G * 
	(ticks - getTiempoInicial());
	double vx2 = pow(vx, 2);
	double vy2 = pow(vy, 2);
	double V02 = vx2 + vy2;
	double V0 = sqrt(V02);
	tangenteAnguloRebote = (fabs(vy)/vx);
	anguloRebote = atan(tangenteAnguloRebote);
	if (anguloRebote < 0) anguloRebote = anguloRebote + M_PI;
	setXinicial(getPosicionX());
	setYinicial(getPosicionY());
	setPosicionY(getPosicionY());
	setTiempoInicial(ticks);
	//setPosicionY(getPosicionY() + epsilon);
	setAnguloCaida(anguloRebote);
	modificarVelocidadInicial(FACTOR, V0);
}
std::string & PajaroRojo::getImagePath() {
	return  imagePath;
}
void  PajaroRojo::setImagePath(std::string &path) {
	imagePath = path;
}

PajaroRojo::~PajaroRojo() {}
